Agent flow arrangement management

ABSTRACT

Disclosed aspects relate to agent flow arrangement management in a distributed commit processing environment. A first set of agent utilization data may be collected with respect to a first commit processing agent. A second set of agent utilization data may be collected with respect to a second commit processing agent. An agent flow arrangement may be determined based on a first value with respect to the first set of agent utilization data exceeding a second value with respect to the second set of agent utilization data. The agent flow arrangement may have the first commit processing agent subsequent to the second commit processing agent. The distributed commit operation may be processed using the agent flow arrangement which has the first commit processing agent subsequent to the second commit processing agent.

BACKGROUND

This disclosure relates generally to computer systems and, moreparticularly, relates to agent flow arrangement management in adistributed commit processing environment. The amount of recoverableoperations that need to be executed in a middleware environment isincreasing. As the amount of recoverable operations that need to beexecuted increases, the need for agent flow arrangement management in adistributed commit processing environment may also increase.

SUMMARY

Aspects of the disclosure relate to selection of potential last agentcandidates based on distributed unit of recovery locking, logging, andoperational characteristics. Connected systems within a distributed unitof recovery may transmit and receive additional data on the recoveryprotocols that flow between them. A two-phase commit protocol may beused with one system acting as the overall coordinator at a point intime and the other systems as subordinates to it. One or more metricsmay represent a different view of the amount of work required by asystem to prepare and then commit recoverable changes. When a commit isprocessed, the coordinating system may review connected systems and usemetric data to determine which system requires more work with respect topreparing and committing changes. The coordinating system may select thesystem with the greater amount of work as the last agent in thedistributed commit. The last agent may only commit its changes ratherthan both preparing and committing its changes.

Disclosed aspects relate to agent flow arrangement management in adistributed commit processing environment. A first set of agentutilization data may be collected with respect to a first commitprocessing agent. A second set of agent utilization data may becollected with respect to a second commit processing agent. An agentflow arrangement may be determined based on a first value with respectto the first set of agent utilization data exceeding a second value withrespect to the second set of agent utilization data. The agent flowarrangement may have the first commit processing agent subsequent to thesecond commit processing agent. The distributed commit operation may beprocessed using the agent flow arrangement which has the first commitprocessing agent subsequent to the second commit processing agent.Accordingly, a prepare operation may be avoided for the first commitprocessing agent.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The drawings included in the present application are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative ofcertain embodiments and do not limit the disclosure.

FIG. 1 depicts a cloud computing node according to embodiments.

FIG. 2 depicts a cloud computing environment according to embodiments.

FIG. 3 depicts abstraction model layers according to embodiments.

FIG. 4 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments.

FIG. 5 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments.

FIG. 6 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments.

FIG. 7 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments.

FIG. 8 shows an example system for agent flow arrangement management ina distributed commit processing environment, according to embodiments.

While the invention is amenable to various modifications and alternativeforms, specifics thereof have been shown by way of example in thedrawings and will be described in detail. It should be understood,however, that the intention is not to limit the invention to theparticular embodiments described. On the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the disclosure relate to selection of potential last agentcandidates based on distributed unit of recovery locking, logging, andoperational characteristics. Connected systems within a distributed unitof recovery may transmit and receive additional data on the recoveryprotocols that flow between them. One or more metrics may represent adifferent view of the amount of work required by a system to prepare andthen commit recoverable changes. When a commit is processed, thecoordinating system may review connected systems and use metric data todetermine which system requires more work with respect to preparing andcommitting changes. The coordinating system may select the system withthe greater amount of work as the last agent in the distributed commit.The last agent may only commit its changes rather than both preparingand committing its changes.

Units of recovery may span multiple systems and represent work that hasbeen distributed between a number of interconnected recoveryenvironments. Distributed units of recovery may require or desirecoordination when recoverable changes must be committed. A two-phasecommit protocol (2PC) may be used with one system acting as the overallcoordinator at a point in time and the other systems as subordinates toit. When a commit point is reached for a distributed unit of recoveryspanning interconnected systems, the system that initially processes the2PC may be the coordinator. The 2PC implementation may involve thecoordinating system asking the remaining systems to prepare themselves(to be able to later commit recoverable changes). The coordinator mayinvoke the last agent optimization by sending only a commit instructionto the final system. In this way, the coordinator role may be passed onto the final system while the original coordinator may become asubordinate to it. The last agent optimization indicates that anunnecessary work flow (e.g., for a prepare) may be avoided. The 2PCimplementation may reduce the delay in other units of recovery frombeing able to modify the same large number of resources changed by thelast agent.

Aspects of the disclosure include a method, system, and computer programproduct for agent flow arrangement management in a distributed commitprocessing environment. A first set of agent utilization data may becollected with respect to a first commit processing agent. A second setof agent utilization data may be collected with respect to a secondcommit processing agent. An agent flow arrangement may be determinedbased on a first value with respect to the first set of agentutilization data exceeding a second value with respect to the second setof agent utilization data. The agent flow arrangement may have the firstcommit processing agent subsequent to the second commit processingagent. The distributed commit operation may be processed using the agentflow arrangement which has the first commit processing agent subsequentto the second commit processing agent.

In certain embodiments, the first commit processing agent may bearranged as the last agent. The distributed commit operation may beconfigured to include a prepare operation for the second commitprocessing agent but not the first commit processing agent. A prepareoperation may be avoided for the first commit processing agent. Invarious embodiments, the set of agent utilization may include a quantityof (past) work performed or a quantity of work expected to be performed.In certain embodiments, the work performed or expected to be performedmay include a quantity or volume of recovery log data, a quantity ofdistinct recoverable changes, a quantity of locks held, a quantity ofhardware processor usage, or a combination of these. Altogether, aspectsof the disclosure can have performance or efficiency benefits. Aspectsmay save resources such as bandwidth, disk, processing, or memory. As anexample, the 2PC implementation may reduce the response time and memoryusage to complete distributed commits. Agent flow arrangement managementmay arrange the agents in the distributed commit such that the agentrequiring a greater amount of work is the last agent. The last agent maycommit as opposed to the other agents which may prepare, then commit.Avoiding the prepare operation of the last agent may reduce the responsetime and memory usage. Other examples of saving resources using agentflow arrangement management may also be possible.

It is understood in advance that although this disclosure includes adetailed description on cloud computing, implementation of the teachingsrecited herein are not limited to a cloud computing environment. Rather,embodiments of the present invention are capable of being implemented inconjunction with any other type of computing environment now known orlater developed.

Cloud computing is a model of service delivery for enabling convenient,on-demand network access to a shared pool of configurable computingresources (e.g., networks, network bandwidth, servers, processing,memory, storage, applications, virtual machines, and services) that canbe rapidly provisioned and released with minimal management effort orinteraction with a provider of the service. This cloud model may includeat least five characteristics, at least three service models, and atleast four deployment models.

Characteristics are as follows:

On-demand self-service: a cloud consumer can unilaterally provisioncomputing capabilities, such as server time and network storage, asneeded automatically without requiring human interaction with theservice's provider.

Broad network access: capabilities are available over a network andaccessed through standard mechanisms that promote use by heterogeneousthin or thick client platforms (e.g., mobile phones, laptops, and PDAs).

Resource pooling: the provider's computing resources are pooled to servemultiple consumers using a multi-tenant model, with different physicaland virtual resources dynamically assigned and reassigned according todemand. There is a sense of location independence in that the consumergenerally has no control or knowledge over the exact location of theprovided resources but may be able to specify location at a higher levelof abstraction (e.g., country, state, or datacenter).

Rapid elasticity: capabilities can be rapidly and elasticallyprovisioned, in some cases automatically, to quickly scale out andrapidly released to quickly scale in. To the consumer, the capabilitiesavailable for provisioning often appear to be unlimited and can bepurchased in any quantity at any time.

Measured service: cloud systems automatically control and optimizeresource use by leveraging a metering capability at some level ofabstraction appropriate to the type of service (e.g., storage,processing, bandwidth, and active user accounts). Resource usage can bemonitored, controlled, and reported providing transparency for both theprovider and consumer of the utilized service.

Service Models are as follows:

Software as a Service (SaaS): the capability provided to the consumer isto use the provider's applications running on a cloud infrastructure.The applications are accessible from various client devices through athin client interface such as a web browser (e.g., web-based e-mail).The consumer does not manage or control the underlying cloudinfrastructure including network, servers, operating systems, storage,or even individual application capabilities, with the possible exceptionof limited user-specific application configuration settings.

Platform as a Service (PaaS): the capability provided to the consumer isto deploy onto the cloud infrastructure consumer-created or acquiredapplications created using programming languages and tools supported bythe provider. The consumer does not manage or control the underlyingcloud infrastructure including networks, servers, operating systems, orstorage, but has control over the deployed applications and possiblyapplication hosting environment configurations.

Infrastructure as a Service (IaaS): the capability provided to theconsumer is to provision processing, storage, networks, and otherfundamental computing resources where the consumer is able to deploy andrun arbitrary software, which can include operating systems andapplications. The consumer does not manage or control the underlyingcloud infrastructure but has control over operating systems, storage,deployed applications, and possibly limited control of select networkingcomponents (e.g., host firewalls).

Deployment Models are as follows:

Private cloud: the cloud infrastructure is operated solely for anorganization. It may be managed by the organization or a third party andmay exist on-premises or off-premises.

Community cloud: the cloud infrastructure is shared by severalorganizations and supports a specific community that has shared concerns(e.g., mission, security requirements, policy, and complianceconsiderations). It may be managed by the organizations or a third partyand may exist on-premises or off-premises.

Public cloud: the cloud infrastructure is made available to the generalpublic or a large industry group and is owned by an organization sellingcloud services.

Hybrid cloud: the cloud infrastructure is a composition of two or moreclouds (private, community, or public) that remain unique entities butare bound together by standardized or proprietary technology thatenables data and application portability (e.g., cloud bursting forloadbalancing between clouds).

A cloud computing environment is service oriented with a focus onstatelessness, low coupling, modularity, and semantic interoperability.At the heart of cloud computing is an infrastructure comprising anetwork of interconnected nodes.

Referring now to FIG. 1, a block diagram of an example of a cloudcomputing node is shown. Cloud computing node 100 is only one example ofa suitable cloud computing node and is not intended to suggest anylimitation as to the scope of use or functionality of embodiments of theinvention described herein. Regardless, cloud computing node 100 iscapable of being implemented and/or performing any of the functionalityset forth hereinabove.

In cloud computing node 100 there is a computer system/server 110, whichis operational with numerous other general purpose or special purposecomputing system environments or configurations. Examples of well-knowncomputing systems, environments, and/or configurations that may besuitable for use with computer system/server 110 include, but are notlimited to, personal computer systems, server computer systems, tabletcomputer systems, thin clients, thick clients, handheld or laptopdevices, multiprocessor systems, microprocessor-based systems, set topboxes, programmable consumer electronics, network PCs, minicomputersystems, mainframe computer systems, and distributed cloud computingenvironments that include any of the above systems or devices, and thelike.

Computer system/server 110 may be described in the general context ofcomputer system executable instructions, such as program modules, beingexecuted by a computer system. Generally, program modules may includeroutines, programs, objects, components, logic, data structures, and soon that perform particular tasks or implement particular abstract datatypes.

Computer system/server 110 may be practiced in distributed cloudcomputing environments where tasks are performed by remote processingdevices that are linked through a communications network. In adistributed cloud computing environment, program modules may be locatedin both local and remote computer system storage media including memorystorage devices.

As shown in FIG. 1, computer system/server 110 in cloud computing node100 is shown in the form of a general-purpose computing device. Thecomponents of computer system/server 110 may include, but are notlimited to, one or more processors or processing units 120, a systemmemory 130, and a bus 122 that couples various system componentsincluding system memory 130 to processing unit 120.

Bus 122 represents one or more of any of several types of busstructures, including a memory bus or memory controller, a peripheralbus, an accelerated graphics port, and a processor or local bus usingany of a variety of bus architectures. By way of example, and notlimitation, such architectures include Industry Standard Architecture(ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA)bus, Video Electronics Standards Association (VESA) local bus, andPeripheral Component Interconnect (PCI) bus.

Computer system/server 110 typically includes a variety of computersystem readable media. Such media may be any available media that isaccessible by computer system/server 110, and it includes both volatileand non-volatile media, removable and non-removable media. An example ofremovable media is shown in FIG. 1 to include a Digital Video Disc (DVD)192.

System memory 130 can include computer system readable media in the formof volatile or non-volatile memory, such as firmware 132. Firmware 132provides an interface to the hardware of computer system/server 110.System memory 130 can also include computer system readable media in theform of volatile memory, such as random access memory (RAM) 134 and/orcache memory 136. Computer system/server 110 may further include otherremovable/non-removable, volatile/non-volatile computer system storagemedia. By way of example only, storage system 140 can be provided forreading from and writing to a non-removable, non-volatile magnetic media(not shown and typically called a “hard drive”). Although not shown, amagnetic disk drive for reading from and writing to a removable,non-volatile magnetic disk (e.g., a “floppy disk”), and an optical diskdrive for reading from or writing to a removable, non-volatile opticaldisk such as a CD-ROM, DVD-ROM or other optical media can be provided.In such instances, each can be connected to bus 122 by one or more datamedia interfaces. As will be further depicted and described below,memory 130 may include at least one program product having a set (e.g.,at least one) of program modules that are configured to carry out thefunctions described in more detail below.

Program/utility 150, having a set (at least one) of program modules 152,may be stored in memory 130 by way of example, and not limitation, aswell as an operating system, one or more application programs, otherprogram modules, and program data. Each of the operating system, one ormore application programs, other program modules, and program data orsome combination thereof, may include an implementation of a networkingenvironment. Program modules 152 generally carry out the functionsand/or methodologies of embodiments of the invention as describedherein.

Computer system/server 110 may also communicate with one or moreexternal devices 190 such as a keyboard, a pointing device, a display180, a disk drive, etc.; one or more devices that enable a user tointeract with computer system/server 110; and/or any devices (e.g.,network card, modem, etc.) that enable computer system/server 110 tocommunicate with one or more other computing devices. Such communicationcan occur via Input/Output (I/O) interfaces 170. Still yet, computersystem/server 110 can communicate with one or more networks such as alocal area network (LAN), a general wide area network (WAN), and/or apublic network (e.g., the Internet) via network adapter 160. Asdepicted, network adapter 160 communicates with the other components ofcomputer system/server 110 via bus 122. It should be understood thatalthough not shown, other hardware and/or software components could beused in conjunction with computer system/server 110. Examples, include,but are not limited to: microcode, device drivers, redundant processingunits, external disk drive arrays, Redundant Array of Independent Disk(RAID) systems, tape drives, data archival storage systems, etc.

Referring now to FIG. 2, illustrative cloud computing environment 200 isdepicted. As shown, cloud computing environment 200 comprises one ormore cloud computing nodes 100 with which local computing devices usedby cloud consumers, such as, for example, personal digital assistant(PDA) or cellular telephone 210A, desktop computer 210B, laptop computer210C, and/or automobile computer system 210N may communicate. Nodes 100may communicate with one another. They may be grouped (not shown)physically or virtually, in one or more networks, such as Private,Community, Public, or Hybrid clouds as described hereinabove, or acombination thereof. This allows cloud computing environment 200 tooffer infrastructure, platforms and/or software as services for which acloud consumer does not need to maintain resources on a local computingdevice. It is understood that the types of computing devices 210A-Nshown in FIG. 2 are intended to be illustrative only and that computingnodes 100 and cloud computing environment 200 can communicate with anytype of computerized device over any type of network and/or networkaddressable connection (e.g., using a web browser).

Referring now to FIG. 3, a set of functional abstraction layers providedby cloud computing environment 200 in FIG. 2 is shown. It should beunderstood in advance that the components, layers, and functions shownin FIG. 3 are intended to be illustrative only and the disclosure andclaims are not limited thereto. As depicted, the following layers andcorresponding functions are provided.

Hardware and software layer 310 includes hardware and softwarecomponents. Examples of hardware components include mainframes, in oneexample IBM System z systems; RISC (Reduced Instruction Set Computer)architecture based servers, in one example IBM System p systems; IBMSystem x systems; IBM BladeCenter systems; storage devices; networks andnetworking components. Examples of software components include networkapplication server software, in one example IBM WebSphere® applicationserver software; and database software, in one example IBM DB2® databasesoftware. IBM, System z, System p, System x, BladeCenter, WebSphere, andDB2 are trademarks of International Business Machines Corporationregistered in many jurisdictions worldwide.

Virtualization layer 320 provides an abstraction layer from which thefollowing examples of virtual entities may be provided: virtual servers;virtual storage; virtual networks, including virtual private networks;virtual applications and operating systems; and virtual clients.

In one example, management layer 330 may provide the functions describedbelow. Resource provisioning provides dynamic procurement of computingresources and other resources that are utilized to perform tasks withinthe cloud computing environment. Metering and Pricing provide costtracking as resources are utilized within the cloud computingenvironment, and billing or invoicing for consumption of theseresources. In one example, these resources may comprise applicationsoftware licenses. Security provides identity verification for cloudconsumers and tasks, as well as protection for data and other resources.User portal provides access to the cloud computing environment forconsumers and system administrators. Service level management providescloud computing resource allocation and management such that requiredservice levels are met. Service Level Agreement (SLA) planning andfulfillment provide pre-arrangement for, and procurement of, cloudcomputing resources for which a future requirement is anticipated inaccordance with an SLA. A cloud manager 350 is representative of a cloudmanager (or shared pool manager) as described in more detail below.While the cloud manager 350 is shown in FIG. 3 to reside in themanagement layer 330, cloud manager 350 can span all of the levels shownin FIG. 3, as discussed below.

Workloads layer 340 provides examples of functionality for which thecloud computing environment may be utilized. Examples of workloads andfunctions which may be provided from this layer include: mapping andnavigation; software development and lifecycle management; virtualclassroom education delivery; data analytics processing; transactionprocessing; and agent flow arrangement management 360, which may beutilized as discussed in more detail below.

FIG. 4 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments. The distributed commit processing environment may include aCustomer Information Control System (CICS), an Information ManagementSystem (IMS), a WebSphere Application Server (WAS), or the like.Recoverable operations may be grouped together into logical collectionsof operations and referred to as units of work or units of recovery. Theunits of work or recovery may be processed by the recovery managementcode within the distributed commit processing environment. Changeswithin a given unit of recovery may be committed or backed out. 2PC mayallow systems to communicate with one another and confirm the executionof queries or commands. It may be desired to optimize the selection of alast agent in order to reduce a delay in units of recovery and enhanceperformance for distributed recovery processing. The agent whichrequires the most amount of work may be chosen as the last agents. Otheragents may prepare while the last agent commits. Once the selected lastagent has committed, the other agents in the system may also commit. Themethod 400 may begin at block 401.

In embodiments, the collecting of a first set of agent utilization data,the collecting of a second set of agent utilization data, thedetermining, the processing, and the other steps described herein mayeach be executed in a dynamic fashion at block 404. The steps describedherein may be executed in a dynamic fashion to streamline agent flowarrangement management in the distributed commit processing environment.The set of operational steps may occur in real-time, ongoing, oron-the-fly. As an example, one or more operational steps describedherein may be carried-out in an ongoing basis to facilitate, promote, orenhance agent flow arrangement management in a distributed commitprocessing environment. Other examples may also be possible.

In embodiments, the collecting of a first set of agent utilization data,the collecting of a second set of agent utilization data, thedetermining, the processing, and the other steps described herein mayeach be executed in an automated fashion at block 406. The stepsdescribed herein may be executed in an automated fashion without userintervention. The operational steps may each occur in an automatedfashion without user intervention or manual action (e.g., usingautomated computer machinery, fully machine-driven without manualstimuli). The automated operational steps may be performed by an agentflow arrangement management engine (e.g., as part of a data managementsystem), a cloud management engine (e.g., as part of a cloudenvironment), or the like.

At block 420, a first set of agent utilization data may be collected.Generally, collecting can include acquiring, obtaining, receiving,attaining, aggregating, accumulating, or gathering. The first set ofagent utilization data may include facts, statistics, quantities, orcharacteristics of a first agent. The first set of agent utilizationdata may include the number of log records written for the localrecoverable resources changed by the system for the first unit ofrecovery, the volume of log data written for the first unit of recovery,the number of separate locks held for the local recoverable resources,the number of separate recoverable changes made, or the like. Agentutilization data may relate to the first commit processing agent and mayinclude operations, functionalities, or computing resources with respectto the first commit processing agent. Accordingly, connected systemswithin a distributed unit of recovery may transmit or retrieveadditional data on the recovery protocols that flow between them. One ormore metrics may represent a different view of the amount of work eachsystem would have to perform when being told to prepare and commitrecoverable changes. The collecting may occur in the distributed commitprocessing environment.

At block 440, a second set of agent utilization may be collected.Generally, collecting can include acquiring, obtaining, receiving,attaining, aggregating, accumulating, or gathering. The second set ofagent utilization data may include facts, statistics, quantities, orcharacteristics of a second agent. The second set of agent utilizationdata may include the number of log records written for the localrecoverable resources changed by the system for the second unit ofrecovery, the volume of log data written for the second unit ofrecovery, the number of separate locks held for the local recoverableresources, the number of separate recoverable changes made, or the like.The agent utilization data may relate to the second commit processingagent and may include operations, functionalities, or computingresources with respect to the second commit processing agent. Thecollecting may occur in the distributed commit processing environment.

Consider the following example. A travel website may utilize an agentflow arrangement management system to assist clients with bookingvacations. The travel website may desire an arrangement of agents whichmay provide their clients with an efficient booking experience. Agentutilization data may be collected for various agents or systems. Twoexample systems in this environment may include a first system to bookhotel rooms and a second system to book airline flights. The hotel roomrequest may need to be sent to seven different websites and the airlinebooking request may need to be sent to five different websites. Agentutilization data may be collected for both of these systems. As anexample, quantities and characteristics of the system computingresources to book hotel rooms may be collected, such as the amount ofwork required (e.g., volume of log data written). Quantities andcharacteristics of the system computing resources to book airlineflights may be collected, including the amount of work required (e.g.,volume of log data written). The agent utilization data for these twosystems may be utilized to determine an agent flow arrangement. Otherexamples of collecting agent utilization data may also be possible.

At block 460, an agent flow arrangement may be determined. Determiningcan include computing, calculating, formulating, generating, orascertaining. The agent flow arrangement may include the order in whichthe units of work or units of recovery may be processed. When a commitis processed, connected systems may be reviewed. The metric data may beused to determine which system requires the most work (e.g., in terms ofhaving to prepare/commit its changes). The determining may occur basedon a first value (with respect to the first set of agent utilizationdata) exceeding a second value (with respect to the second set of agentutilization data). The agent flow arrangement may have the first commitprocessing agent subsequent to the second commit processing agent. Ifthe amount of work needed to commit a first agent is greater than theamount of work needed to commit a second agent, then the second agentmay be arranged to occur before the first agent. The determining mayoccur to process a distributed commit operation. As an example, a systemA may select a system B as the last agent based on the metrics of systemB with respect to the amount of work needed as part of the two-phasecommit. System A may call systems C and D to prepare before callingsystem B to commit. In certain embodiments, an agent may require that itis the last agent. This agent may be established as the last agentregardless of the amount of work. In certain specific embodiments, ifsystem A determines that none of the connected systems may be the lastagent, then system A may instruct them all to prepare, and then instructthem all to commit (or back out if necessary).

Consider the following example. Once agent utilization data for thehotel booking system and the airline booking system has been collected,an appropriate agent flow arrangement may be determined in advance ofprocessing the distributed commit operation. The metric data for the twosystems may be analyzed. A first value (with respect to amount of work)may be determined for the hotel booking system computing resources. Thehotel booking system may be awarded a value of 7 (e.g., on a 1-10 scale)for the amount of work required to commit since the request may need tobe processed by seven different websites. A second value may bedetermined for the airline booking system computing resources. Theairline booking system may be awarded a value of 5 on the same scale forthe amount of work required to commit since the request may need to beprocessed by five different websites. The first value exceeds the secondvalue. An agent flow arrangement may be determined having the system forbooking a hotel room subsequent to the system for booking a flight. Thehotel booking system computing resources may be determined as the lastagent since it requires a greater amount of work to commit. Otherexamples of determining an agent flow operation may also be possible.

At block 480, the distributed commit operation may be processed.Generally, processing can include performing, carrying-out, initiating,launching, instantiating, implementing, enacting, running, or executing.The distributed commit operation may include a command for anestablished last agent to commit. The processing may occur using theagent flow arrangement as described herein. The agent flow arrangementmay have the first commit processing agent subsequent to the secondcommit processing agent. As an example, if the first commit processingagent requires a greater amount of work than the second commitprocessing agent, the first commit processing agent may be establishedas the last agent and instructed to commit. The processing may occur inthe distributed commit processing environment.

Consider the following example. Once an agent flow arrangement isdetermined, the distributed commit operation may be processed. Theestablished agent flow arrangement may designate the hotel bookingsystem as the last agent. The distributed commit may be executed. Thesystem for booking a flight may be instructed to prepare, then commit.The system for booking a hotel room may be instructed to commit. Thesystem for booking a flight may prepare. The system for booking a hotelroom may commit. The system for booking a flight may commit. The agentflow arrangement may allow for efficient processing and provide theclient with reservations for both a flight and a hotel room reservationfor their vacation. Other examples of processing the distributed commitoperation may also be possible.

Method 400 concludes at block 499. As described herein, aspects ofmethod 400 relate to agent flow arrangement management in a distributedcommit processing environment. Aspects of method 400 may provideperformance or efficiency benefits related to agent flow arrangementmanagement. Aspects may save resources such as bandwidth, processing, ormemory. As an example, processing time may be saved by selecting a firstagent as the last agent. If the first agent requires more work in orderto be processed (e.g., committed), then the first agent may be selectedas the last agent. Preparing other agents (e.g., a second agent) firstand then committing the first agent may require less processing timethan a different order (e.g., preparing the first agent beforecommitting the second agent). Other methods of saving processing timemay also be possible.

FIG. 5 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments. Aspects may be similar or the same as aspects of method400, and aspects may be used interchangeably. The method 500 may beginat block 501. At block 520, a first set of agent utilization data may becollected. The collecting may occur with respect to a first commitprocessing agent. The collecting may occur in the distributed commitprocessing environment. At block 540, a second set of agent utilizationmay be collected. The collecting may occur with respect to a secondcommit processing agent. The collecting may occur in the distributedcommit processing environment. At block 560, an agent flow arrangementmay be determined. The determining may occur based on a first value(with respect to the first set of agent utilization data) exceeding asecond value (with respect to the second set of agent utilization data).The agent flow arrangement may have the first commit processing agentsubsequent to the second commit processing agent. The determining mayoccur to process a distributed commit operation.

In embodiments, the distributed commit operation may be configured atblock 565. Configuring can include adapting, setting-up, programming,modifying, or adjusting. The distributed commit operation may beconfigured to include a prepare operation for the second commitprocessing agent but not the first commit processing agent. The agentrequiring or desiring the most work (e.g., the first commit processingagent) may be selected as the last agent in the distributed commit asdescribed herein. The second commit processing agent may include aprepare operation to assemble, formulate, or ready the second agent forcommitting. The first commit processing agent may not include a prepareoperation. For instance, in the travel website example described herein,the airline booking system computing resources may undergo a prepareoperation to ready for committing. The hotel booking system computingresources may not undergo a prepare operation.

In embodiments, a prepare operation for the first commit processingagent may be avoided at block 569. Avoiding can include averting,bypassing, or forgoing. As described herein, the second commitprocessing agent may include a prepare operation (to ready the secondagent for committing). A prepare operation for the first commitprocessing agent may be avoided due to the first agent requiring ordesiring a greater amount of work. The first commit processing agent mayonly commit (e.g., instead of preparing then committing) to saveprocessing time. As an example, in the travel website example describedherein, a prepare operation for the hotel booking system computingresources may be avoided. The hotel booking system computing resourcesmay commit instead of preparing then committing. Other examples may alsobe possible.

Consider the following example. A large university may utilize an agentflow arrangement management engine in order for thousands of students toregister for courses simultaneously. Agent utilization data may becollected for multiple agents within the system. As an example, a firstagent may include a system for registering for science classes and asecond agent may include a system for registering for math classes. Itmay be determined that the system for registering for science classesrequires more work (e.g., than the system for registering for mathclasses) in order to commit. An agent flow arrangement may be determinedwhich designates the science class system as the last agent. Thedistributed commit operation may be configured to include both a prepareand a commit operation for the math class system but only a commitoperation for the science class system. A prepare operation may beavoided for the science class system. This configuration may occur inresponse to the determination that the science class system requires agreat amount of work. When the distributed commit operation isprocessed, the math class system may prepare, the science class systemmay commit, and the math class system may commit. The established flowarrangement may provide students with an efficient method to registerfor math and science classes. Other examples of configuring thedistributed commit operation may also be possible.

In embodiments, the first commit processing agent may be arranged atblock 575. Generally, arranging can include ordering, organizing,sorting, or structuring. The first commit processing agent may bearranged to be a last agent due to the large amount of work required inorder to commit. Therefore, the agent requiring the greater amount workmay be arranged as the last agent in the distributed commit. The secondcommit processing agent may prepare. The first commit processing agentmay commit (e.g., rather than prepare then commit). The arranging mayoccur as part of processing the distributed commit operation. Thearranging may occur in the agent flow arrangement. As an example, in thetravel website example described herein, the hotel booking systemcomputing resources may be arranged as the last agent since this systemrequires a greater amount of work than the airline booking systemcomputing resources. Other examples may also be possible.

Consider the following example. A ride-sharing application may utilizeagent flow arrangement management to allow multiple users to requestrides simultaneously. Multiple agents may be used. As an example, oneagent may include a system for a user to request a ride while anotheragent may include a system for a driver to accept a request from apotential rider. Agent utilization data for both systems may becollected, and it may be determined that the driver acceptance systemrequires a greater amount of work to commit than the rider requestsystem. An appropriate agent flow arrangement may be determined. Sincethe driver acceptance system requires a greater amount of work, thissystem may be arranged as the last agent (in the agent flowarrangement). When the operation is processed, the rider request systemmay prepare, the driver acceptance system may commit, and the riderrequest system may commit. The established arrangement may efficientlyprocess the operation of matching of a rider with a driver. Otherexamples of arranging the first commit processing agent to be the lastagent may also be possible.

At block 580, the distributed commit operation may be processed. Theprocessing may occur using the agent flow arrangement. The agent flowarrangement may have the first commit processing agent subsequent to thesecond commit processing agent. The processing may occur in thedistributed commit processing environment. Method 500 concludes at block599. As described herein, aspects of method 500 relate to agent flowarrangement management in a distributed commit processing environment.Aspects of method 500 may provide performance or efficiency benefitsrelated to agent flow arrangement management. Aspects may save resourcessuch as bandwidth, processing, or memory. As an example, memory may besaved by avoiding a prepare operation for the first agent. The firstagent (e.g., the agent which requires the larger amount of work) mayonly commit (e.g., as opposed to prepare then commit). Avoiding theprepare operation for the agent requiring more work may require lessmemory than preparing that same agent. Other examples of saving memorymay also be possible.

FIG. 6 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments. Aspects may be similar or the same as aspects of method400/500, and aspects may be used interchangeably. The method 600 maybegin at block 601. At block 620, a first set of agent utilization datamay be collected. The collecting may occur with respect to a firstcommit processing agent. The collecting may occur in the distributedcommit processing environment. At block 640, a second set of agentutilization may be collected. The collecting may occur with respect to asecond commit processing agent. The collecting may occur in thedistributed commit processing environment. At block 660, an agent flowarrangement may be determined. The determining may occur based on afirst value (with respect to the first set of agent utilization data)exceeding a second value (with respect to the second set of agentutilization data). The agent flow arrangement may have the first commitprocessing agent subsequent to the second commit processing agent. Thedetermining may occur to process a distributed commit operation. Atblock 680, the distributed commit operation may be processed. Theprocessing may occur using the agent flow arrangement. The agent flowarrangement may have the first commit processing agent subsequent to thesecond commit processing agent. The processing may occur in thedistributed commit processing environment.

In embodiments, a quantity of work performed may be indicated at block611. The first set of agent utilization data may be configured toindicate a first quantity of work that has been performed by the firstcommit processing agent. Generally, configuring can include setting-up,programming, structuring, constructing, adjusting, or modifying. Aquantity of work can include an amount or measurement of tasks, jobs,processes, resources utilized, or the like needed or desired to beperformed when preparing then committing recoverable changes of anagent. The work can include the number of log records written for thelocal recoverable resources changed by the system for the agent, thevolume of log data written for the agent, the number of separate locksheld for the local recoverable resources, the number of separaterecoverable changes made, or the like. The quantity of work may indicateor include a historical or past measurement or amount of work (e.g., ahistorical utilization with respect to a unit of recovery). The secondset of agent utilization data may be configured to indicate a secondquantity of work that has been performed by the second commit processingagent. The first quantity of work may be compared with the secondquantity of work. Comparing can include contrasting, assessing,evaluating, correlating, analyzing, investigating, or examining. It maybe calculated that the first quantity of work exceeds the secondquantity of work. Calculating can include computing, determining,formulating, or ascertaining. The first quantity of work for the firstagent may be greater than the second quantity of work for the secondagent. The agent flow arrangement may be determined based on the firstquantity of work exceeding the second quantity of work. Determining caninclude computing, calculating, formulating, generating, orascertaining. The determining may occur to process the distributedcommit operation. Since the first agent required more work to commit,the first agent may be established as the last agent. The second agentmay prepare then commit while the first agent may only commit.

Consider the following example. A human resources department for a largecompany may utilize agent flow arrangement management to retrievesignatures approving a recent hire. As an example, one agent may includea system for collecting approval from the company president whileanother agent may include a system for collecting approval from head ofthe department where the new hire will be working. Agent utilizationdata may be collected for both of these systems. The set of agentutilization data may include a quantity of work that has been performed(e.g., historically). The agent utilization data may be based onhistorical statistics from the last hired employee. The last time thesystem was executed, the amount of work to commit agent for thepresident may have been a 9 (e.g., on a 1-10 scale) while the amount ofwork to commit the agent for the department head may have been a 6(e.g., on the same scale). Based on a comparison of the two agents andthe two sets of agent utilization data, it may be calculated that theamount of work to commit the agent for the president exceeds the amountof work to commit the agent for the department head. An appropriateagent flow arrangement may be determined. Since the agent for thepresident historically requires a greater amount of work, this agent maybe arranged as the last agent. When the distributed commit operation isprocessed, the agent for the department head may prepare, the agent forthe president may commit, and the agent for the department head maycommit. Other examples of configuring the agent utilization data toindicate a quantity of work that has been performed may also bepossible.

In embodiments, a quantity of work expected may be indicated at block612. The first set of agent utilization data may be configured toindicate a first quantity of work that is expected to be performed bythe first commit processing agent. Generally, configuring can includesetting-up, programming, structuring, constructing, adjusting, ormodifying. The first quantity of work may include an amount ormeasurement of tasks, jobs, processes, resources utilized, or the likeneeded or desired to be performed when preparing then committingrecoverable changes of an agent. The first quantity of work that isexpected to be performed may include a predicted or forecasted amount offuture work (e.g., with respect to a unit of recovery). The second setof agent utilization data may be configured (e.g., programmed, adjusted,modified) to indicate a second quantity of work that is expected to beperformed by the second commit processing agent. The first quantity ofwork may be compared with the second quantity of work. Comparing caninclude contrasting, assessing, evaluating, correlating, analyzing,investigating, or examining. It may be calculated that the firstquantity of work exceeds the second quantity of work. Calculating caninclude computing, determining, formulating, or ascertaining. The firstquantity of work for the first agent may be greater than the secondquantity of work for the second agent. The agent flow arrangement may bedetermined based on the first quantity of work exceeding the secondquantity of work. Determining can include computing, calculating,formulating, generating, or ascertaining. The determining may occur toprocess the distributed commit operation. Since the first agent willrequire more work to commit, the first agent may be established as thelast agent. The second agent may prepare then commit while the firstagent may only commit.

Consider the following example. A video streaming service may utilizeagent flow arrangement management to efficiently provide numerous userswith movies and television shows. One agent (system A) may locate therequested video for a user while another agent (system B) may locate anavailable server for streaming. Agent utilization data for the twoagents may be collected, including a quantity of work that is expectedto be performed by each processing agent. As an example, it may becalculated that system A is expected to require an amount of work of 44(e.g., on a 1-100 scale) while system B is expected to require an amountof work of 73 (e.g., on the same scale). The two quantities of work maybe compared with one another. It may be calculated that system B mayrequire more work than system A since 73 exceeds 44. An appropriateagent flow arrangement may be determined for the streaming service.System B may be established as the last agent since it requires agreater amount of work than system A. The system which locates therequested video (system A) may prepare, the system which locates anavailable server (system B) may commit, and the system which locates therequested video (system A) may commit. Other examples of configuring theagent utilization data to indicate a quantity of work that is expectedto be performed may also occur.

In embodiments, a quantity of recovery log write operations may beindicated at block 613. The first set of agent utilization data may beconfigured to indicate a first quantity of recovery log write operationsby the first commit processing agent with respect to a job unit.Generally, configuring can include setting-up, programming, structuring,constructing, adjusting, or modifying. A quantity of recovery log writeoperations may include the number of times a query or request has beenwritten to a log (e.g., measured by a count of a number of records). Thesecond set of agent utilization data may be configured to indicate asecond quantity of recovery log write operations by the second commitprocessing agent with respect to the job unit. The first quantity ofrecovery log write operations may be compared with the second quantityof recovery log write operations. Comparing can include contrasting,assessing, evaluating, correlating, analyzing, investigating, orexamining. It may be calculated that the first quantity of recovery logwrite operations exceeds the second quantity of recovery log writeoperations. Calculating can include computing, determining, formulating,or ascertaining. The first quantity of recovery log write operations forthe first agent may be greater than the second quantity of recovery logwrite operations for the second agent. The agent flow arrangement may bedetermined based on the first quantity of recovery log write operationsexceeding the second quantity of recovery log write operations.Determining can include computing, calculating, formulating, generating,or ascertaining. The determining may occur to process the distributedcommit operation. Since the first agent requires a larger quantity ofrecovery log write operations to commit, the first agent may beestablished as the last agent. The second agent may prepare then commitwhile the first agent may only commit.

Consider the following example. A medical environment may utilize agentflow arrangement management for newly admitted patients. Multiple agentsmay be used to process a distributed commit operation. As an example,one agent (system C) may reserve a room for the new patient whileanother agent (system D) may alert a medical professional of the arrivalof the new patient. Agent utilization data may be collected for bothsystems C and D, including a quantity of recovery log write operations.The collected data for system C may indicate that the request to reservea room may require being written to a recovery log 4 times. Thecollected data for system D may indicate that the request to alert amedical professional may require being written to a recovery log 2times. The two quantities may be compared to one another. It may becalculated that the quantity of recovery log write operations for systemC (e.g., 4) exceeds the quantity of recovery log write operations forsystem D (e.g., 2). The agent flow arrangement may be determined basedon this calculation. Since system C requires a greater number ofrecovery log write operations than system D, system C may require morework and may be established as the last agent. When the distributedcommit operation is processed, the system to alert a medicalprofessional may prepare, the system to reserve a room may commit, andthe system to alert a medical professional may commit. Other examples ofconfiguring the utilization data to indicate a quantity of recovery logwrite operations may also be possible.

In embodiments, a volume of recovery log data written may be indicatedat block 614. The first set of agent utilization data may be configuredto indicate a first volume of recovery log data written for the firstcommit processing agent with respect to a job unit. Generally,configuring can include setting-up, programming, structuring,constructing, adjusting, or modifying. A volume of recovery log data mayinclude the amount or magnitude of queries or requests written to a log(e.g., number of records, volume/amount of data). The second set ofagent utilization data may be configured to indicate a second volume ofrecovery log data written for the second commit processing agent withrespect to the job unit. The first volume of recovery log data writtenmay be compared with the second volume of recovery log data written.Comparing can include contrasting, assessing, evaluating, correlating,analyzing, investigating, or examining. It may be calculated that thefirst volume of recovery log data written exceeds the second volume ofrecovery log data written. Calculating can include computing,determining, formulating, or ascertaining. The first volume of recoverylog data written for the first agent may be greater than the secondvolume of recovery log data written for the second agent. The agent flowarrangement may be determined based on the first volume of recovery logdata written exceeding the second volume of recovery log data written.Determining can include computing, calculating, formulating, generating,or ascertaining. The determining may occur to process the distributedcommit operation. Since the first agent has a greater volume of recoverylog data, the first agent may be established as the last agent. Thesecond agent may prepare then commit while the first agent may onlycommit.

Consider the following example. A ticket purchasing service may useagent flow arrangement management to provide users with an efficientmethod of reserving and purchasing tickets for concerts and sportingevents. The ticket purchasing service may utilize multiple systems toprocess requests. As an example, one agent may include a system whichreserves a ticket for a user while another agent may include a systemwhich processes the payment (e.g., credit card information) of a user.Agent utilization data may be collected for both systems, including avolume of recovery log data. The reservation system may require 10requests to be written to a recovery log while the payment system mayrequire 6 requests to be written to a recovery log. As another example,volume of recovery log data for the reservation system may be calculatedas 10 GB while the payment system may only require 6 GB. In bothscenarios, the two volumes of recovery log data may be compared with oneanother and it may be calculated that the volume of recovery log datafor the reservation system (e.g., 10) exceeds the volume of recovery logdata for the payment system (e.g., 6). The agent flow arrangement may bedetermined. The reservation system may be established as the last agentsince it requires a greater volume of recovery log data (andconsequently, a greater amount of work) than the payment system. Whenthe distributed commit operation is executed, the payment system mayprepare, the reservation system may commit, and the payment system maycommit. Other examples of configuring the set of utilization data toindicate a volume of recovery log data may also be possible.

In embodiments, a quantity of distinct recoverable changes may beindicated at block 616. The first set of agent utilization data may beconfigured to indicate a first quantity of distinct recoverable changesby the first commit processing agent with respect to a job unit.Generally, configuring can include setting-up, programming, structuring,constructing, adjusting, or modifying. The quantity of distinctrecoverable changes may include the number of alterations or adjustmentsto an agent (e.g., a change to a table, multiple changes to a file). Thesecond set of agent utilization data may be configured to indicate asecond quantity of distinct recoverable changes by the second commitprocessing agent with respect to the job unit. The first quantity ofdistinct recoverable changes may be compared with the second quantity ofdistinct recoverable changes. Comparing can include contrasting,assessing, evaluating, correlating, analyzing, investigating, orexamining. It may be calculated that the first quantity of distinctrecoverable changes exceeds the second quantity of distinct recoverablechanges. Calculating can include computing, determining, formulating, orascertaining. The first quantity of distinct recoverable changes for thefirst agent may be greater than the second quantity of distinctrecoverable changes for the second agent. The agent flow arrangement maybe determined based on the first quantity of distinct recoverablechanges exceeding the second quantity of distinct recoverable changes.Determining can include computing, calculating, formulating, generating,or ascertaining. The determining may occur to process the distributedcommit operation. Since the first agent requires more distinctrecoverable changes to commit, the first agent may be established as thelast agent. The second agent may prepare then commit while the firstagent may only commit.

Consider the following example. A stock market may utilize agent flowarrangement management in a high-frequency trading environment. Multipleagents may be used to process requests for a number of traders. As anexample, one agent (system A) may process a request from a traderwishing to sell a share while another agent (system B) may process arequest from a trader wishing to buy a share. Agent utilization data maybe collected for both agents, including a quantity of distinctrecoverable changes. The agent utilization data for system A mayindicate 15 changes to a file while the agent utilization data forsystem B may indicate 24 changes to a file. The quantities of distinctrecoverable changes may be compared with one another and it may becalculated that the number of changes for system B exceeds the number ofchanges for system A. The agent flow arrangement may be determined.Since system B requires a greater number of changes (and by extension, agreater amount of work) than system A, system B may be established asthe last agent. A request to sell a share may be prepared, a request tobuy a share may be committed, and the request to sell a share may becommitted. Other examples of configuring the set of agent utilizationdata to indicate a quantity of distinct recoverable changes are alsopossible.

In embodiments, a quantity of locks held may be indicated at block 617.The first set of agent utilization data may be configured to indicate afirst quantity of locks held by the first commit processing agent withrespect to a job unit. Generally, configuring can include setting-up,programming, structuring, constructing, adjusting, or modifying. A lockmay include a method of prevention of alterations or changes to a file.The quantity of locks held may include the number of separatepreventions of alterations for recoverable resources (e.g., a lock on atable in a database, a lock on a record in a file). The second set ofagent utilization data may be configured to indicate a second quantityof locks held by the second commit processing agent with respect to thejob unit. The first quantity of locks held may be compared with thesecond quantity of locks held. Comparing can include contrasting,assessing, evaluating, correlating, analyzing, investigating, orexamining. It may be calculated that the first quantity of locks heldexceeds the second quantity of locks held. Calculating can includecomputing, determining, formulating, or ascertaining. The first quantityof locks held for the first agent may be greater than the secondquantity of locks held for the second agent. The agent flow arrangementmay be determined based on the first quantity of locks held exceedingthe second quantity of locks held. Determining can include computing,calculating, formulating, generating, or ascertaining. The determiningmay occur to process the distributed commit operation. Since the firstagent requires more locks held in order to commit, the first agent maybe established as the last agent. The second agent may prepare thencommit while the first agent may only commit.

Consider the following example. The travel website described herein mayutilize two different agents to process a client request. One agent mayinclude a system which reserves a rental car for a client while anotheragent may include a system which purchases tickets to a play for theclient. Agent utilization data may be collected for both of theseagents, including a quantity of locks held to prevent changes to thefiles. As an example, the car rental system may require 9 locks toreserve a car for a client while the ticket purchasing system mayrequire only 3 locks to purchase tickets to the play. The two quantitiesof locks may be compared with one another and it may be calculated thatthe car rental system requires a greater number of locks than the ticketpurchasing system. The agent flow arrangement may be determined. The carrental system may be established as the last agent since it requires agreater number of locks (e.g., a greater amount of work) than the ticketpurchasing system. When the distributed commit operation is executed,the ticket purchasing system may prepare, the car rental system maycommit, and the ticket purchasing system may commit. Other examples ofconfiguring the agent utilization data to indicate a quantity of locksheld may also occur.

In embodiments, a quantity of hardware processor usage may be indicatedat block 618. The first set of agent utilization data may be configuredto indicate a first quantity of hardware processor usage by the firstcommit processing agent with respect to a job unit. Generally,configuring can include setting-up, programming, structuring,constructing, adjusting, or modifying. The quantity of hardwareprocessor usage may include the number of processor units, the speed ofthe processor, or the like required to commit an agent. The second setof agent utilization data may be configured to indicate a secondquantity of hardware processor usage by the second commit processingagent with respect to a job unit. The first quantity of hardwareprocessor usage may be compared with the second quantity of hardwareprocessor usage. Comparing can include contrasting, assessing,correlating, analyzing, investigating, or examining. It may becalculated that the first quantity of hardware processor usage exceedsthe second quantity of hardware processor usage. Calculating can includecomputing, determining, formulating, or ascertaining. The first quantityof hardware processor usage may be greater than the second quantity ofhardware processor usage. The agent flow arrangement may be determinedbased on the first quantity of hardware processor usage exceeding thesecond quantity of hardware processor usage. Determining can includecomputing, calculating, formulating, generating, or ascertaining. Thedetermining may occur to process the distributed commit operation. Sincethe first agent requires more hardware processor usage to commit, thefirst agent may be established as the last agent. The second agent mayprepare then commit while the first agent may only commit.

Consider the following example. The university registration systemdescribed herein may utilize two different agents to process studentcourse registration. One agent may process a request for registration inhistory classes while another agent may process a request forregistration in economics classes. Agent utilization data may becollected for both agents, including a quantity of hardware processorusage. The history agent may require 9 microseconds of CPU time tocommit while the economics agent may require 12 microseconds of CPU timeto commit. The quantities of hardware processor usage may be compared toone another and it may be calculated that the processor usage for theeconomics agent exceeds the processor usage for the history agent. Theagent flow arrangement may be determined. Since the economics agentrequires a greater amount of hardware processor usage (and a greateramount of work) than the history agent, the economics agent may beestablished as the last agent. When the distributed commit operation isexecuted, the history agent may prepare, the economics agent may commit,and the history agent may commit. Other examples of configuring the setof agent utilization data to indicate a quantity of hardware processorusage may also be possible.

In embodiments, the agent flow arrangement may be determined at block661. Generally, determining can include computing, calculating,formulating, generating, or ascertaining. The determining may occurbased on quantities of volume of recovery log data written forprocessing agents with respect to a job unit, quantities of distinctrecoverable changes by the processing agents with respect to the jobunit, quantities of locks held by the processing agents with respect tothe job unit, and quantities of hardware processor usage by processingagents with respect to the job unit. The agent flow arrangement may bebased on more than one type of metric data. The agent flow arrangementmay utilize an algorithm to weight, rank, or organize the agents basedon multiple kinds of metric data. As an example, the volume of recoverylog data, the quantity of distinct recoverable changes, the quantity oflocks held, and the quantity of hardware processor usage may each beweighted by a percentage (e.g., 25%) to determine which agent should bethe last one. The types of metric data may be weighted equally (e.g.,25% each) or differently (e.g., 10% for one type/40% for anothertype/50% for another type). The algorithm may determine which agentshould be the last agent. The algorithm may narrow down several agentsto a smaller number of agents (e.g., from 100 to 3) which could be thelast agent.

Consider the following example. The ride-sharing application describedherein may utilize two agents to match riders and drivers. System A mayprocess requests from riders while system B may process acceptance ofrequests from drivers. Agent utilization data may be collected for bothsystems, including a volume of recovery log data, a quantity of distinctrecoverable changes, a quantity of locks held, and a quantity ofhardware processor usage. System A may require 12 GB of recovery logdata written, 4 distinct recoverable changes, 8 locks held, and 20microseconds of hardware processor usage. System B may require 7 GB ofrecovery log data written, 5 distinct recoverable changes, 15 locksheld, and 16 microseconds of hardware processor usage. The differenttypes of metric data may be weighted to determine the agent flowarrangement. The volume of recovery log data may be weighted 30%, thequantity of distinct recoverable changes may be weight 15%, the quantityof locks held may be weighted 25%, and the hardware processor usage maybe weighted 30%. A quantity for amount of work may be calculated usingthe established weights. System A may require an amount of work equal to(12*0.30)+(4*0.15)+(8*0.25)+(20*0.30)=12.2. System B may require anamount of work equal to (7*0.30)+(5*0.15)+(15*0.25)+(12*0.30)=10.2.System A requires a greater amount of work than system B, so system Amay be established as the last agent. When the distributed commitoperation is processed, the acceptance of a driver may be prepared, therequest from a rider may be committed, and the acceptance of a drivermay be committed. Other examples of using multiple metrics to determinethe agent flow arrangement may also be possible.

Method 600 concludes at block 699. As described herein, aspects ofmethod 600 relate to agent flow arrangement management in a distributedcommit processing environment. Aspects of method 600 may provideperformance or efficiency benefits related to agent flow arrangementmanagement. Aspects may save resources such as bandwidth, processing, ormemory. As an example, processing may be saved by determining whichagent requires the greater amount of hardware processor usage. The agentthat requires the greater amount of hardware processor usage may beestablished as the last agent. The last agent may only be committed(e.g., as opposed to prepared then committed). Preparing and committingthe last agent may require more processing than only committing. As aresult, processing may be saved. Other examples of saving processing mayalso be possible.

FIG. 7 is a flowchart illustrating a method for agent flow arrangementmanagement in a distributed commit processing environment, according toembodiments. Aspects may be similar or the same as aspects of method400/500/600, and aspects may be used interchangeably. The method 700 maybegin at block 701. At block 720, a first set of agent utilization datamay be collected. The collecting may occur with respect to a firstcommit processing agent. The collecting may occur in the distributedcommit processing environment. At block 740, a second set of agentutilization may be collected. The collecting may occur with respect to asecond commit processing agent. The collecting may occur in thedistributed commit processing environment.

In embodiments, a third set of agent utilization data may be collectedat block 750. Generally, collecting can include gathering, accumulating,acquiring, or obtaining. The collecting may occur with respect to athird commit processing agent. The third set of agent utilization datamay include facts, statistics, quantities, or characteristics of a thirdagent. The collecting may occur in the distributed commit processingenvironment. The agent flow arrangement may be determined. Determiningcan include formulating, computing, resolving, or ascertaining. Thedetermining may occur based on the first value (with respect to thefirst set of agent utilization data) exceeding a third value (withrespect to the third set of agent utilization data). The determining mayoccur as part of processing the distributed commit operation. The agentflow arrangement may have the first commit processing agent subsequentto the third commit processing agent. If the amount of work needed tocommit a first agent is greater than the amount of work needed to commita third agent, then the third agent may be arranged to occur before thefirst agent. The distributed commit operation may be processed.Generally, processing can include performing, carrying-out, initiating,launching, instantiating, implementing, enacting, running, or executing.The processing may occur using the agent flow arrangement (which has thefirst commit processing agent subsequent to the third commit processingagent). As an example, if the first commit processing agent requires agreater amount of work than the third commit processing agent, then thefirst commit processing agent may be established as the last agent andinstructed to commit. The processing may occur in the distributed commitprocessing environment.

Consider the following example. The human resources department describedherein may utilize three agents to approve of the hiring of a newemployee. System A may process the approval (e.g., acknowledgement ofcontract, official signature) of the company president, system B mayprocess the approval of the department head, and system C may processthe approval of the newly hired individual. Agent utilization data maybe collected for each system. As an example, system A may require anamount of work of 7 (e.g., on a 1-10 scale), system B may require anamount of work of 4, and system C may require an amount of work of 2.The agent flow arrangement may be determined. Since system A requires agreater amount of work than system C, system A may be established as thelast agent. When the distributed commit operation is processed, systemsB and C may prepare, system A may commit, and systems B and C maycommit. Other examples of collecting a third set of agent utilizationdata may also be possible.

At block 760, an agent flow arrangement may be determined. Thedetermining may occur based on a first value (with respect to the firstset of agent utilization data) exceeding a second value (with respect tothe second set of agent utilization data). The agent flow arrangementmay have the first commit processing agent subsequent to the secondcommit processing agent. The determining may occur to process adistributed commit operation.

In embodiments, determining and processing may occur at block 765. Theagent flow arrangement may be determined based on the second value (withrespect to the second set of agent utilization data) exceeding the thirdvalue (with respect to the third set of agent utilization data).Determining can include formulating, computing, resolving, orascertaining. The determining may occur to process the distributedcommit operation. The agent flow arrangement may have the second commitprocessing agent subsequent to the third commit processing agent. If theamount of work needed to commit a second agent is greater than theamount of work needed to commit a third agent, then the third agent maybe arranged to occur before the second agent. The distributed commitoperation may be processed in the distributed commit processingenvironment. Generally, processing can include performing, carrying-out,initiating, launching, instantiating, implementing, enacting, running,or executing. The processing may occur using the agent flow arrangementwhich has the second commit processing agent subsequent to the thirdcommit processing agent. As an example, if the second commit processingagent requires a greater amount of work than the third commit processingagent, then the second commit processing agent may be established as thelast agent and instructed to commit. As another example, the firstcommit processing agent may require the greatest amount of work followedby the second commit processing agent followed by the third commitprocessing agent. The first commit processing agent may be establishedas the last agent and instructed to commit. The third commit processingagent may prepare first, followed by second commit processing agentpreparing. The first commit processing agent may commit.

Consider the following example. In the human resources example describedherein, system A may require an amount of work of 7 (e.g., on a 1-10scale), system B may require an amount of work of 4, and system C mayrequire an amount of work of 2. The agent flow arrangement may bedetermined accordingly. System A may be established as the last agent asdescribed herein. With respect to systems B and C, the amount of workrequired to commit system B is greater than the amount of work requiredto commit system C. The agent flow arrangement may include system Bsubsequent to system C. The established arrangement may include systemC, then system B, then finally system A as the last agent. When thedistributed commit operation is processed, system C may prepare first,followed by system B preparing. System A may commit, followed by systemsB and C committing. Other examples of determining the agent flowarrangement based on the second value exceeding the third value may alsooccur.

In embodiments, coordinating and selecting may occur at block 777. Theagent flow arrangement may be coordinated by the first commit processingagent. Coordinating may include adapting, adjusting, organizing,ascertaining, determining, communicating, resolving, or arranging. Thecoordinating may occur as part of processing the distributed commitoperation. The first commit processing agent may be selected by thefirst commit processing agent (e.g., it selects itself) as thecoordinating agent. Selecting may include choosing, picking, electing,specifying, or designating. In certain embodiments, the first processingagent may be established as the coordinating agent. The first processingagent may calculate or detect that it is the agent with the largermetrics with respect to the amount of work required to commit. The firstprocessing agent (e.g., the coordinating agent) may select itself as thelast agent. In the travel agency example described herein, the hotelroom system may be the established coordinator. Since the hotel roomsystem requires a greater amount of work to commit than the airlinesystem, the hotel room system may select itself as the last (e.g.,coordinating) agent.

In various embodiments, a second processing agent may originate as thecoordinating agent. The second processing agent may determine that thefirst processing agent should be the last agent since it requires agreater amount of work to commit. The second processing agent (e.g., thecoordinating agent) may transfer the role of coordinator to the firstagent. The first processing agent may accept the role of coordinator,select itself as the last agent, and perform other aspects as describedherein.

Consider the following example. The video streaming service describedherein may utilize agent flow arrangement management to provide userswith movies and television shows. One agent (system A) may locate therequested video for a user while another agent (system B) may locate anavailable server for streaming. System B may be the establishedcoordinator for the distributed commit operation. System B may determinethat system A requires a greater amount of work to commit (e.g., systemB requires 4 on a 1-10 scale while system A requires 7 on a 1-10 scale).System B may transfer the role of coordinating agent to system A. Sincesystem A requires a greater amount of work in order to commit, system Amay establish itself as the last agent. When the distributed commitoperation is executed, system B may prepare, system A may commit, andsystem B may commit. Other examples of coordinating the agent flowarrangement may also be possible.

At block 780, the distributed commit operation may be processed. Theprocessing may occur using the agent flow arrangement. The agent flowarrangement may have the first commit processing agent subsequent to thesecond commit processing agent. The processing may occur in thedistributed commit processing environment. Method 700 concludes at block799. As described herein, aspects of method 700 relate to agent flowarrangement management in a distributed commit processing environment.Aspects of method 700 may provide performance or efficiency benefitsrelated to agent flow arrangement management. Aspects may save resourcessuch as bandwidth, processing, or memory. As an example, choosing afirst agent (e.g., from a group containing a second and third agent) asthe last agent may save memory. The first agent may require more work tocommit than the second and third agents. The second and third agents mayprepare then commit while the first agent may only commit. Committingand not preparing the first agent may require less memory than preparingand committing the first agent. Other examples of saving memory may alsobe possible.

FIG. 8 shows an example system for agent flow arrangement management ina distributed commit processing environment, according to embodiments.The example system may consist of four agents, A, B, C, and D. System Amay be the established coordinator for the 2PC. Systems (B, C, D) mayreport metric information back to the coordinating agent (A) on thenature of recoverable changes required in order to commit. The metricinformation may include number of log records written, volume of logdata written, number of separate locks held, number of separaterecoverable changes, or the like. The metric data may be recorded (e.g.,in memory, on external media, written to a queue) within the callingsystem so when a commit operation is instructed to begin, the data isavailable for the next phase of the inventive logic to utilize. The 2PCmay utilize metric data when determining the agent to select as the lastagent for the distributed commit operation. In this case, system C maybe selected as the last agent. Metrics from each system may be compared(including the metrics of the coordinating agent A) and the other systemwhich has the most work to do when committing may be selected as thelast agent. The system may avoid having to perform both a separateprepare and then commit operation.

In addition to embodiments described above, other embodiments havingfewer operational steps, more operational steps, or differentoperational steps are contemplated. Also, some embodiments may performsome or all of the above operational steps in a different order.

In embodiments, operational steps may be performed in response to otheroperational steps. The modules are listed and described illustrativelyaccording to an embodiment and are not meant to indicate necessity of aparticular module or exclusivity of other potential modules (orfunctions/purposes as applied to a specific module).

In the foregoing, reference is made to various embodiments. It should beunderstood, however, that this disclosure is not limited to thespecifically described embodiments. Instead, any combination of thedescribed features and elements, whether related to differentembodiments or not, is contemplated to implement and practice thisdisclosure. Many modifications and variations may be apparent to thoseof ordinary skill in the art without departing from the scope and spiritof the described embodiments. Furthermore, although embodiments of thisdisclosure may achieve advantages over other possible solutions or overthe prior art, whether or not a particular advantage is achieved by agiven embodiment is not limiting of this disclosure. Thus, the describedaspects, features, embodiments, and advantages are merely illustrativeand are not considered elements or limitations of the appended claimsexcept where explicitly recited in a claim(s).

The present invention may be a system, a method, and/or a computerprogram product. The computer program product may include a computerreadable storage medium (or media) having computer readable programinstructions thereon for causing a processor to carry out aspects of thepresent invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Java, Smalltalk, C++ or the like,and conventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

Embodiments according to this disclosure may be provided to end-usersthrough a cloud-computing infrastructure. Cloud computing generallyrefers to the provision of scalable computing resources as a serviceover a network. More formally, cloud computing may be defined as acomputing capability that provides an abstraction between the computingresource and its underlying technical architecture (e.g., servers,storage, networks), enabling convenient, on-demand network access to ashared pool of configurable computing resources that can be rapidlyprovisioned and released with minimal management effort or serviceprovider interaction. Thus, cloud computing allows a user to accessvirtual computing resources (e.g., storage, data, applications, and evencomplete virtualized computing systems) in “the cloud,” without regardfor the underlying physical systems (or locations of those systems) usedto provide the computing resources.

Typically, cloud-computing resources are provided to a user on apay-per-use basis, where users are charged only for the computingresources actually used (e.g., an amount of storage space used by a useror a number of virtualized systems instantiated by the user). A user canaccess any of the resources that reside in the cloud at any time, andfrom anywhere across the Internet. In context of the present disclosure,a user may access applications or related data available in the cloud.For example, the nodes used to create a stream computing application maybe virtual machines hosted by a cloud service provider. Doing so allowsa user to access this information from any computing system attached toa network connected to the cloud (e.g., the Internet).

Embodiments of the present disclosure may also be delivered as part of aservice engagement with a client corporation, nonprofit organization,government entity, internal organizational structure, or the like. Theseembodiments may include configuring a computer system to perform, anddeploying software, hardware, and web services that implement, some orall of the methods described herein. These embodiments may also includeanalyzing the client's operations, creating recommendations responsiveto the analysis, building systems that implement portions of therecommendations, integrating the systems into existing processes andinfrastructure, metering use of the systems, allocating expenses tousers of the systems, and billing for use of the systems.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

While the foregoing is directed to exemplary embodiments, other andfurther embodiments of the invention may be devised without departingfrom the basic scope thereof, and the scope thereof is determined by theclaims that follow. The descriptions of the various embodiments of thepresent disclosure have been presented for purposes of illustration, butare not intended to be exhaustive or limited to the embodimentsdisclosed. Many modifications and variations will be apparent to thoseof ordinary skill in the art without departing from the scope and spiritof the described embodiments. The terminology used herein was chosen toexplain the principles of the embodiments, the practical application ortechnical improvement over technologies found in the marketplace, or toenable others of ordinary skill in the art to understand the embodimentsdisclosed herein.

What is claimed is:
 1. A computer-implemented method for agent flowarrangement management in a distributed two-phase commit processingenvironment, the method comprising: collecting, in the distributedtwo-phase commit processing environment, a first set of agentutilization data with respect to a first commit processing agent;collecting, in the distributed two-phase commit processing environment,a second set of agent utilization data with respect to a second commitprocessing agent; collecting, in the distributed two-phase commitprocessing environment, a third set of agent utilization data withrespect to a third commit processing agent; determining, based on afirst value with respect to the first set of agent utilization dataexceeding a second value with respect to the second set of agentutilization data, an agent flow arrangement to process a distributedcommit operation, wherein the agent flow arrangement has the firstcommit processing agent subsequent to the second commit processingagent; processing, in the distributed two-phase commit processingenvironment, the distributed commit operation using the agent flowarrangement which has the first commit processing agent subsequent tothe second commit processing agent; determining, based on the firstvalue with respect to the first set of agent utilization data exceedinga third value with respect to the third set of agent utilization data,the agent flow arrangement to process the distributed commit operation,wherein the agent flow arrangement has the first commit processing agentsubsequent to the third commit processing agent; processing, in thedistributed two-phase commit processing environment, the distributedcommit operation using the agent flow arrangement which has the firstcommit processing agent subsequent to the third commit processing agent;determining, based on the second value with respect to the second set ofagent utilization data exceeding the third value with respect to thethird set of agent utilization data, the agent flow arrangement toprocess the distributed commit operation, wherein the agent flowarrangement has the second commit processing agent subsequent to thethird commit processing agent; and processing, in the distributedtwo-phase commit processing environment, the distributed commitoperation using the agent flow arrangement which has the second commitprocessing agent subsequent to the third commit processing agent;configuring the first set of agent utilization data to indicate a firstquantity of work associated with the first commit processing agent;configuring the second set of agent utilization data to indicate asecond quantity of work associated with second the commit processingagent; comparing the first quantity of work with the second quantity ofwork; calculating that the first quantity of work exceeds the secondquantity of work; determining, based on the first quantity of workexceeding the second quantity of work, the agent flow arrangement toprocess the distributed commit operation; and arranging, in the agentflow arrangement, the first commit processing agent to be a last agentto process the distributed commit operation.